home *** CD-ROM | disk | FTP | other *** search
/ PC Open 92 / PC Open 92 CD 1.bin / internet / AmphetaDesk / docs / TODO < prev    next >
Encoding:
Text File  |  2002-10-29  |  21.0 KB  |  389 lines

  1. ###############################################################################
  2. # AmphetaDesk                                           (c) 2000-2002 Disobey #
  3. # TODO                                    http://www.disobey.com/amphetadesk/ #
  4. ###############################################################################
  5.  
  6. ------------------------------------------------------------------------------
  7. SLATED FOR v0.94 RELEASE (ie. try to get these done before everything else)
  8. ------------------------------------------------------------------------------
  9.  
  10.    ---------------------------------------------------------------------------
  11.    Goldplating:
  12.    ---------------------------------------------------------------------------
  13.    - look into new channels for use in the defaults.
  14.  
  15.    ---------------------------------------------------------------------------
  16.    New filter_items subroutine:
  17.    ---------------------------------------------------------------------------
  18.    - CHANNEL LINKS: Check if the links in a channel's rss are relative
  19.      ("/relative/click.html") and turn them into $channel->{htmlurl} .
  20.      "/relative/click.html" (absolute versions). We're gonna move this
  21.      to a "filter_feeds" routine for the templates, so this bugfix is
  22.      deferred.
  23.    - EXTERNAL LINKS: There are still some feeds that our A HREF regexp
  24.      doesn't seem to catch for fixing the TARGET of the link. Add about
  25.      a hundred or so feeds, and you'll inevitably find one. Why? NOTE:
  26.      Is related to "'d HREFs. We're gonna move this to a "filter_feeds"
  27.      routine for the templates, so this bugfix is deferred.
  28.    - HASHED TITLE AND DESCRIPTIONS: check for HASH again.
  29.    - SHOW ONLY X ITEMS FROM CHANNEL? No HOWTO would be needed.
  30.  
  31.    ---------------------------------------------------------------------------
  32.    Known bugs:
  33.    ---------------------------------------------------------------------------
  34.    - we don't check for errors on whether the mirror/filesave
  35.      actually works, causing fun nonesucheries on permission errs, etc.
  36.      i bet we could make the mirror code more readable in the first place.
  37.    - fix up the logging messages for downloading. they're confusing.
  38.    - figure out what to do with expat?
  39.  
  40.    ---------------------------------------------------------------------------
  41.    Crappy code that needs to be fixed/I'm not satisfied with:
  42.    ---------------------------------------------------------------------------
  43.    - I don't like how AmphetaDesk::Channels::load_channel will accept 
  44.      a filename or a string - that seems kludgely to me. at most, we should
  45.      accept a filename or a URL. support for strings was added to handle
  46.      AmphetaDesk::Channels::add_url, but that needs redoing too. all of
  47.      this would be rewritten/revamped when we did our AmphetaDesk::Parser.
  48.    - the add_url routine is a mess, going all over the place. it really
  49.      should be rewritten to handle HTML autodiscovery, subscription
  50.      regardless of parsability, etc. the current code also doesn't support
  51.      multiple subscriptions where one of the URLs is https://.
  52.    - I don't like the AmphetaDesk::MyChannels::load_my_channels code,
  53.      especially the odd kludge to check for raw data or a filepath.
  54.      I'm not sure this is really something I can fix without totally
  55.      overhauling the import/add_url code (which will happen anyways).
  56.    - I don't really like the default subscription lists being in 
  57.      MyChannels.pm anymore. Or the fact that our dates are bogus
  58.      defaults. Should we move these back to an external file and
  59.      use our "import" to bring them in as the user's list?
  60.    - do the save/load_my_channels/settings really need to accept
  61.      $passed_path? there's really no time the defaults aren't used.
  62.    - the writing of the OPML file in XML::Simple sucks, since 
  63.      a value has to be "" not undef, else XML::Simple tries to set
  64.      the undef as a new hash element. this should get better if
  65.      we can write our own printer when we switch to Ampheta::Parser.
  66.  
  67.    NOTE: We're gonna have to rebuild the OS X gui for the next version of
  68.          AmphetaDesk, because we're using a new version of expat to fix the
  69.          UTF8-BOM segfault. We don't need a new binary for Win32, since we
  70.          "fix" the UTF8-BOM bug by cheating in our load_channel code.
  71.  
  72.  
  73. ------------------------------------------------------------------------------
  74. SOMETIME SOON (no specific date or release. just nice to get done).
  75. ------------------------------------------------------------------------------
  76.  
  77.  - BACKUPS: We do no backups of our important files (myChannels.opml, 
  78.    mySettings.xml, and the log file). We should add a directory beneath
  79.    /data/ called 'backups' and create weekly backups there (4 weeks worth?).
  80.    I've got code for this already (check the nhpr backup scripts you wrote).
  81.  
  82.  - CGI SUPPORT: $os would become Internet, $connection would be STDOUT?
  83.    Lots of people want this. The biggest addition would be security settings
  84.    and user accounts. How do you handle $HOME directories?
  85.  
  86.  - CHANNEL DBMS: In future versions of AmphetaDesk, our channel information
  87.    should be stored in DBM files. This will supersede anything we do with
  88.    channel meta items (and the matching XML). The primary benefit (above
  89.    and beyond the channel meta items, which allow "new items in a feed",
  90.    "show only items newer than Y days or hide items older than X" days)
  91.    is that we'll be able to keep a local store of RSS data, allowing people
  92.    to create aggregate feeds on keyword, search through months worth of
  93.    data, and so forth.
  94.  
  95.  - CHANNEL DUPLICATES: Check for duplicate code fails on query strings
  96.    and 'www' or no 'www'. Query strings we can't really take care of.
  97.  
  98.  - CHANNEL META ITEMS: This is all in Morbus' head, but has been discussed
  99.    on the mailing lists, in #disobey, and was partially implemented in
  100.    deus' AmphetaOutlines. It requires Digest::MD5. (jack@novagate.com,
  101.    huftis@bigfoot.com, bringmetruth1@netscape.net, adam@kalsey.com,
  102.    davew@dsl.telocity.com, iain@cheyne.net, oneiros@dcr.net,
  103.    johnseq@pobox.com jw@abprosys.com, KlausRusch@atmedia.net,
  104.    huftis@bigfoot.com, mbrow28@sph.emory.edu pkelly@toronto.cbc.ca,
  105.    scott@randomchaos.com, thomas@stderr.net, chapman@lambuth.edu
  106.    ashiel@sportsinteraction.com)
  107.  
  108.  - CHANNEL GROUPING / ORDERING: There needs to be some way of ordering
  109.    the channels. The current plan is to allow channels to be grouped
  110.    under different headings like "Tech News", "Health News" and so on.
  111.    Categories can be sorted differently than the channels within. See
  112.    http://sourceforge.net/mailarchive/message.php?msg_id=1726994.
  113.    (craw@visi.com, peters@earlham.edu, iain@cheyne.net, jw@abprosys.com,
  114.    meryl@meryl.net, scott@randomchaos.com, kerim.mail@oxus.net)
  115.  
  116.  - CHANNEL HTML: Strip all HTML? Allow only these tags? Problem tags
  117.    include title, script, and textarea. Tables are relatively dangerous
  118.    as well, but should be remotely restricted to their own channel. 
  119.    Tags to allow: a h* strong em i blockquote ol ul li img p br?
  120.  
  121.  - CHANNEL IGNORING: Some people would like to remember channels that 
  122.    have piqued their interest, but don't want to actually see their
  123.    items in the channel listing until they call for it (they'd still
  124.    like to stay subscribed). The idea would be to have the title of the
  125.    channel shown at the end of the listing, with the number of new
  126.    items ("Wired News - 7 new items since last viewed"). People would
  127.    be able to click on the title to see the items that have been 
  128.    hidden from view. This would be possible with categories. 
  129.    (peters@earlham.edu)
  130.  
  131.  - CHANNEL LISTS: A user should be able to specify which language they
  132.    are interested in, and get a list of feeds back to them. This will
  133.    be pretty easy once the Syndic8 export is happening, although
  134.    we'll probably have to move to the OCS exports instead (which,
  135.    in the long run, should give us more power anyways).
  136.    (sasw@Swernofsky.com)
  137.  
  138.  - CHANNEL LISTS: Reenact downloading of updated channel lists. This
  139.    will require a script on disobey.com that will suck down the data
  140.    and gzip, and then in AmphetaDesk, it'll have to Compress::Zlib to
  141.    extract the data to the right location.
  142.  
  143.  - CHANNEL LISTS: Reenact "are you subscribed?" check for the lists.
  144.    Not entirely sure what the visual stimulus should be, but a check
  145.    box probably isn't it (since that'd cause a 'duplicate channel'
  146.    error upon submittal). Perhaps the absence of a checkbox and
  147.    something that says "you're currently subscribed, click here
  148.    to unsubscribe"?
  149.  
  150.  - CHANNEL LISTS: Should be searchable. Standard AND/OR/NOT and URL
  151.    specific searches should be possible. Can we just hook into the 
  152.    Syndic8 API? Not so sure I like the co-dependance factor. The
  153.    sad thing is, this isn't a perfect solution since the data
  154.    available from the feeds aren't adequately described, making
  155.    bad search results. Whatever we do, we'll have to include some
  156.    sort of warning about bad data. (richardevanslee@yahoo.com,
  157.    iain@cheyne.net, jw@abprosys.com, scottdavey@telocity.com)
  158.  
  159.  - CHANNEL LISTS: Sorting needs to be smarter, by not alphabetizing by
  160.    "A Channel Name" or "The Channel Name" and instead just "Channel Name".
  161.    (oneiros@dcr.net)
  162.  
  163.  - CHANNEL SORTING: On the main channels page, a user should be
  164.    able to sort alphabetically, by date downloaded or added, etc.
  165.    This is pretty easy due to our get_my_sorted_channels routine. 
  166.    We'll have to include a default setting under My Settings.
  167.  
  168.  - CHANNEL UPDATES: Force update of all channels. This needs to be GUI
  169.    capable for Windows, and also accessible from the web pages. Should
  170.    we add the "Refresh Channel List" to the web pages as well? How will
  171.    we stop people from force-refreshing multiple times? Perhaps only
  172.    allow force refreshes of one channel at a time? Perhaps we implement
  173.    this as a query string like ?update_channels (meryl@meryl.net).
  174.  
  175.  - CGI: Not entirely sure how we're going to handle this, but 
  176.    CGI.pm is anxious to convert URL parameters into parameters
  177.    for our own usage. This starts causing problems when people
  178.    are trying to ?add_url, and the URL in question has CGI
  179.    parameters as well. As of right now, we're telling people
  180.    to decimal encode those parameters, but not everyone can.
  181.  
  182.  - COMMAND LINE FLAGS: -nobrowser, -port, -quiet?
  183.  
  184.  - CONTENT-TYPES: We send out text/html for a content-type on
  185.    any non-image request to our webserver. This should get smarter
  186.    and default to text/plain for everything but /?html?/.
  187.  
  188.  - CUSTOMIZABLE EXPORTS: The collected data of all the downloaded 
  189.    RSS files should be exportable to a template based file, or to 
  190.    a webserver, or even to email. This all needs to be customizable,
  191.    as well as having a pretty happy GUI. (chris@lockergnome.com,
  192.    djwudi@yahoo.com)
  193.  
  194.  - DOCS: add faq? "how to find your proxy server", "common zip problems".
  195.  
  196.  - DOCS: convert the various AmphetaModules into POD so that they can
  197.    be converted into HTML documentation for the webpages. easier for
  198.    me to refer developers to them.
  199.  
  200.  - DOCS: finish template documentation (add data available for use
  201.    within the templates, how to use unknown data from RSS feeds,
  202.    and so on and so forth).
  203.  
  204.  - DOCS: finish up the rest of the new v0.93 developer documentation.
  205.  
  206.  - DOCS: get deus to write a bit about the "to create a mac os x binary"
  207.    on the build page (how are icons built? can he blurb a bit about
  208.    the shell files, and how those are run?)
  209.  
  210.  - DOCS: write up HOWTOs for "only xxx letters", "show last x channels",
  211.    "local weather", "using LWP::Simple to get data from other sites", etc.
  212.  
  213.  - ETAGS: From http headers,  these are unique id's that change only
  214.    when the content has changed. Here's an example (the collection
  215.    of these tags would live in the channel DBM file). While we're adding
  216.    this, we should throw in Conditional Get support as well (reevaluate
  217.    our HEAD, too). http://fishbowl.pastiche.org/archives/001132.html
  218.  
  219.  - EXPAT: Currently, we strip all BOM from UTF-8 feeds in load_channel.
  220.    This is because some versions of expat can crash if fed one of these
  221.    feeds. This isn't much of a problem under Windows or MacOS/OSX, since
  222.    we control the version of expat shipped. However, we need to detect
  223.    what version of expat is installed on Linux systems, and if we can't,
  224.    strip BOM stuff.
  225.  
  226.  - GOLDPLATING: Our note() and error() routines should join() the
  227.    entire @_ so that we don't have to use concat tricks to send
  228.    out long error messages. Probably gigamiliseconds of savings.
  229.  
  230.  - GUI (Mac): Remove the MacPerl menu's. Stick with our own.
  231.  
  232.  - GUI (Mac): open_url should hook into MacPerl::Internet (see Fry email).
  233.  
  234.  - GUI (Win): Allow an option to shut off the GUI for Windows?
  235.  
  236.  - GUI (Win): Minimize on start, minimize on X? (jw@abprosys.com)
  237.  
  238.  - GUI (Win): Good points. I'll certainly add the "last time checked"
  239.    sort of thing to the Systray, but the "display the log file" is a bit
  240.    stickier. I may just run a shell sort of command ("open
  241.    /data/AmphetaDesk.log") and have Windows open the program (or the "Open
  242.    With..." window) that is defaulted to handle .log extensions. Also,
  243.    change tray icon to reflect downloading status? (jw@abprosys.com)
  244.  
  245.  - HTTP AUTHENTICATION: Allow auth to protected Yahoo! Groups and
  246.    generically, any site that requires a username and password.
  247.    (marcus@wordit.com, KlausRusch@atmedia.net, mkrus@newsisfree.com)
  248.  
  249.  - INSTALLATION: This is primarily important for Linux users and
  250.    whenever we do CGI based installs, but the wrapper script should
  251.    show what modules are not installed, and give some instructions
  252.    on how to download them (either for the system, or into our
  253.    AmphetaDesk lib/ directory). IOW, we shouldn't fatally die
  254.    impolitely anymore, but offer users a chance to reconcile.
  255.    We also need to check for version numbers - we use Vars for
  256.    CGI.pm, which is relatively new enough that some don't have
  257.    the correct module version.
  258.  
  259.  - LOGGING: We should use ISO dates and times on our output,
  260.    especially since the logfiles now stick around for 250k.
  261.  
  262.  - MULTITHREADED EVERYTHING: The webserver should be multi-threaded,
  263.    the download code should be multi-threaded, and if we could get the
  264.    GUI loaded in it's own process, that'd be insanely great. Whether this
  265.    is all magically possible on every system has yet to be tested. More
  266.    than likely, this feature won't be possible until we can see if
  267.    threads work under Classic Mac support, since it doesn't support
  268.    forks(). I really think this is a cross-platform pipedream.
  269.  
  270.  - MULTI-USERS: Make AmphetaDesk support multiple users with one
  271.    install. There's a whole crapload of email on this. (gordon@g2meyer.com,
  272.    see also SF feature request)
  273.  
  274.  - MY CHANNELS OPML UPDATES: If we receive a 301 HTTP Redirect, we should
  275.    update the URL in the myChannels.opml (we've got initial code from
  276.    Klaus to do this).
  277.  
  278.  - OPEN URLS: In some systems, due to bad networking or crackwhore
  279.    firewalls, people can't use 127.0.0.1 or localhost to access
  280.    their AmphetaDesk. We should examine ways of detecting the user's
  281.    IP address on the box (if they have one), and give them the option
  282.    of using that IP instead (we've instructed people how to hard code
  283.    their IP address in the past).
  284.  
  285.  - PLUGIN APIs. Already planned, and there's a quickie email here on it:
  286.    http://sourceforge.net/mailarchive/forum.php?thread_id=827854&forum_id=9314
  287.    (leonard@cfoknows.com, wkearney99@hotmail.com)
  288.  
  289.  - PROXY AUTODISCOVERY: IE registry settings? .pac files? (Autodiscovery
  290.    of .pac files is documented somewhere.  The idea being that a client
  291.    can make a DNS request for a particularly named file from a specially
  292.    named host.  Searching on .pac should be helpful - Kearney).
  293.  
  294.  - RSS PARSING: We really should revamp our RSS parsing system. The current
  295.    plan is to create AmphetaDesk::Parser which would discover new parsers
  296.    at AmphetaDesk::Parser::RSSv090.pm, ::RSSv200.pm, and so on. This would
  297.    allow people to drag and drop new parsers, and AmphetaDesk would understand
  298.    them at startup. In addition to this, each parser will also return a list
  299.    of errors concerning why the feed is incorrect (even though we'll be
  300.    ultraliberal in what we accept, we'll now give the user a chance to
  301.    report the error). Autodiscovery of parsers should be possible by
  302.    browsing through %INC for AmphetaDesk::Parser's location, and then
  303.    getting a readdir of parsers sitting in AmphetaDesk/Parser. When
  304.    we implement this, our OPML.pm should take over the processing
  305.    done by AmphetaDesk::ChannelsList::load_channels_by_letter.
  306.  
  307.  - RSS PARSING: Namespace support. We'll have to write a
  308.    "get_prefix_from_url" namespace routine which will take a passed
  309.    URL (like the NS URL for mod_admin or any of the other RSS modules),
  310.    and then return the actual prefix used. This will allow our templates
  311.    to easily print/display that information.
  312.  
  313.  - RSS PARSING: Support RDFS descriptions for modules? We'd have to keep
  314.    a local store of them shipped with AmphetaDesk, but we'll always let
  315.    those be overridden with data we find online.
  316.  
  317.  - SECURITY: There needs to be access lists for the internal webserver -
  318.    to either allow X, Y, Z ip/dns. We've got the "localhost or not" 
  319.    code, but need some more flexibility.
  320.  
  321.  - STDOUT: Check over all the notes and errors and responses. Make sure
  322.    they're doing what they should be and are well written. Probably a
  323.    good bet to extract them all and compare them side by side. I'm being
  324.    really anal about this since it's vitally important to communicate.
  325.  
  326.  - TEMPLATES: Look into BROKEN under Text::Template which we can use
  327.    to display custom errors when there's a template error. This makes
  328.    a much better output than the blanket Perl error currently.
  329.  
  330.  - TEMPLATES: We need to add a front end to downloading and using templates.
  331.    These templates need to come with info files, so that people can make
  332.    custom settings, version numbers, and who to contact for more information.
  333.  
  334.  - TEMPLATES: Possible ideas for templates: a left-handed bar and click as
  335.    per Mozilla or IE sidebars. Clicking on the left would open in the main
  336.    window on the right. A collapsible DHTML interface like shown here:
  337.    http://www.webreference.com/dhtml/column12/. (jw@abprosys.com) One
  338.    guy (glutnix@yahoo.com.au) also had us load into IE's search bar:
  339.    >javascript:Q='';if(top.frames.length==0)Q=document.selection.createRange
  340.    >().text;void(_search=open('http://127.0.0.1:8888/index.html','_search'))
  341.    Also, look into deus_ex's outliner version and implement. I've got
  342.    a Lynx template from Ransom Smith - include that one. See if we
  343.    can rip off a three-pane NNWL with frames. And finally:
  344.    http://www.kottke.org/plus/misc/images/netnewswire.gif
  345.  
  346.  - TEMPLATES: Figure out why whitespace is needed after our [$ and
  347.    $] delimiters for Text::Template. This worked fine on simple
  348.    test cases, but something in our setup causes a necessity for
  349.    something to be on the delimiter line, even if just a comment.
  350.  
  351.  - USAGE DATA: Perhaps allow anonymous upload of AmphetaDesk data that
  352.    would find out which feeds are most popularly subscribed too, and 
  353.    yadda yadda. This would kinda be a DayPop sorta thing, but more
  354.    on feeds themselves as opposed to actual items. This lends great
  355.    credence to an Amazon like recommendation system. (iain@cheyne.net)
  356.  
  357.  - USAGE LEARNING / KEYWORDS: A number of people want AmphetaDesk to
  358.    get smarter. They want to say "These are things I'm interested in",
  359.    and have AmphetaDesk list those items at the top of the screen, or
  360.    in a feed all by itself (for website export). The keyword idea would
  361.    be simple to use - perhaps we could add a button next to each item
  362.    like "add to keywords". AmphetaDesk would then parse that item, adding
  363.    uncommon words to the user's keyword list. In some respects, this could
  364.    be sent to a central server, and AmphetaDesk could recommend new
  365.    channels that match their interests (although, at this point, this 
  366.    is kinda satanic. Perhaps we could include the relevant data into the
  367.    massive channel list ourselves?). (sasw@Swernofsky.com)
  368.  
  369.  - VERSION CHECKING: Should be an XML file, not plain text. This will all
  370.    be handled once we jump into Compress::Zlib and start looking into
  371.    streaming updates. Streaming updates are a long long way off, but at
  372.    least moving to XML will allow us greater flexibility. We should also
  373.    move data/internal/version.txt to just plain old data/version.txt, 
  374.    getting rid of the internal/ directory entirely.
  375.  
  376. ------------------------------------------------------------------------------
  377. KNOWN RARE/MINOR BUGS (nothing major, but should be fixed).
  378. ------------------------------------------------------------------------------
  379.  
  380.  - MAC AND BROWSER CHOOSING: Mac users can't choose a browser besides
  381.    the default. Alan has sent a MacEvent solution, we should try and
  382.    integrate that. [This has never been brought up so is low priority.]
  383.  - MAC OS X AND MISSING IMAGE: "Just one question: there's a large empty
  384.    area at the top of the AmphetaDesk OS X window (above the status line
  385.    that you can 'dink' open to see the log)." (withers@optushome.com.au;
  386.    screenshot available. ask morbus). Using 10.1.5 and the April Dev Tools.
  387.    Confirmed using Jaguar as well.
  388.  
  389.